

Page({
    data: {
      userInfo: {},
      reportDetail: {},
      currentTime: '' // 用于显示当前时间
    },
  
    onLoad: function(options) {
      const reportId = options.id;
  
      // 模拟从后端异步获取数据
      this.fetchUserInfo();
      this.fetchReportDetail(reportId);
  
      // 设置当前时间
      this.setData({
        currentTime: this.formatDate(new Date())
      });
    },
  
    /**
     * 模拟获取用户信息
     */
    fetchUserInfo() {
      setTimeout(() => {
        const mockUserInfo = {
          name: '张三',
          gender: '男',
          age: 30,
          memberId: 'TM2025001008',
          memberLevel: '钻石会员',
          registerTime: '2023-05-10'
        };
        this.setData({ userInfo: mockUserInfo });
      }, 600);
    },
  
    /**
     * 模拟获取报告详情
     */
    fetchReportDetail(reportId) {
      // 模拟不同报告ID返回不同数据
      const mockReports = {
        report001: {
          id: 'report001',
          type: '全面检查',
          date: '2025-11-20',
          doctor: '张医生',
          items: [
            '牙齿清洁度',
            '龋齿检查',
            '牙龈健康度',
            '牙齿磨损程度',
            '口腔菌群检测',
            '智齿评估'
          ],
          results: [
            { label: '牙齿清洁度', value: '良好', status: 'normal' },
            { label: '龋齿检查', value: '无龋齿', status: 'normal' },
            { label: '牙龈健康度', value: '轻度炎症', status: 'warning' },
            { label: '牙齿磨损程度', value: '正常', status: 'normal' },
            { label: '口腔菌群检测', value: '平衡', status: 'normal' },
            { label: '智齿评估', value: '建议拔除（右下）', status: 'warning' }
          ],
          advice:
            '建议保持每日两次刷牙习惯，使用牙线清洁牙缝，每半年进行一次专业洗牙。因牙龈有轻度炎症，可使用消炎漱口水辅助改善，近期避免辛辣刺激食物。右下智齿建议择期拔除，以防反复发炎。',
          compareStatus: 'improved',
          compareResult: '整体状况较上次检查有所改善'
        },
        report002: {
          id: 'report002',
          type: '矫正评估',
          date: '2025-10-15',
          doctor: '李医生',
          items: [
            '牙齿移动距离',
            '牙套贴合度',
            '口腔软组织健康',
            '矫正器磨损情况',
            '咬合关系'
          ],
          results: [
            { label: '牙齿移动距离', value: '符合预期', status: 'normal' },
            { label: '牙套贴合度', value: '良好', status: 'normal' },
            { label: '口腔软组织健康', value: '轻度磨损', status: 'warning' },
            { label: '矫正器磨损情况', value: '正常', status: 'normal' },
            { label: '咬合关系', value: '逐步改善', status: 'normal' }
          ],
          advice:
            '继续按照矫正计划佩戴牙套，注意饮食清淡，避免过硬食物。因口腔软组织有轻度磨损，可使用保护蜡缓解，若出现溃疡及时复诊。下次复诊时间：2025-11-15',
          compareStatus: 'stable',
          compareResult: '矫正进度稳定'
        }
      };
  
      setTimeout(() => {
        // 如果传入的ID不存在，则默认返回第一个报告
        this.setData({
          reportDetail: mockReports[reportId] || mockReports.report001
        });
      }, 800);
    },
  
    /**
     * 格式化日期
     */
    formatDate(date) {
      const year = date.getFullYear();
      const month = (date.getMonth() + 1).toString().padStart(2, '0');
      const day = date.getDate().toString().padStart(2, '0');
      const hours = date.getHours().toString().padStart(2, '0');
      const minutes = date.getMinutes().toString().padStart(2, '0');
      return `${year}-${month}-${day} ${hours}:${minutes}`;
    },
  
    /**
     * 导出报告
     */
    exportReport() {
      wx.showLoading({ title: '正在导出...' });
      setTimeout(() => {
        wx.hideLoading();
        wx.showToast({ title: '导出成功', icon: 'success' });
      }, 1500);
    },

    // 核心：导出 PDF
//   exportToPDF() {
//     wx.showLoading({ title: '正在生成PDF...' });

//     // 1. 获取导出容器的布局信息
//     const query = wx.createSelectorQuery().in(this);
//     query.select('#exportContainer')
//       .fields({ node: true, size: true })
//       .exec(async (res) => {
//         const container = res[0].node;
//         const width = res[0].width;
//         const height = res[0].height;

//         // 2. 用 html2canvas 将容器转为 Canvas 图片
//         const canvas = await html2canvas(container, {
//           width: width,
//           height: height,
//           dpr: wx.getSystemInfoSync().pixelRatio, // 适配设备像素比，保证图片清晰
//           useCORS: true // 允许跨域图片（如果报告中有远程图片需开启）
//         });

//         // 3. 将 Canvas 转为图片临时路径
//         const tempFilePath = canvas.toTempFilePathSync({
//           destWidth: width * 2, // 放大2倍，避免PDF中模糊
//           destHeight: height * 2
//         });

//         // 4. 用 jsPDF 生成 PDF
//         const pdf = new jsPDF({
//           orientation: 'portrait', // 纵向
//           unit: 'px', // 单位：像素
//           format: [width, height] // PDF 尺寸和容器一致
//         });
//         // 将图片插入 PDF（x=0, y=0, 宽度=容器宽度）
//         pdf.addImage(tempFilePath, 'PNG', 0, 0, width, height);

//         // 5. 下载 PDF（小程序中需用 wx.downloadFile 配合临时文件）
//         const pdfBase64 = pdf.output('datauristring'); // 转为 base64
//         const base64Data = pdfBase64.replace(/^data:application\/pdf;base64,/, '');
        
//         // 6. 保存文件到用户设备
//         wx.cloud.callFunction({
//           name: 'downloadFile',
//           data: {
//             base64Data: base64Data,
//             fileName: `口腔报告_${this.data.userInfo.name}_${this.data.reportDetail.date}.pdf`
//           },
//           success: (res) => {
//             const fileId = res.result.fileID;
//             wx.cloud.getTempFileURL({
//               fileList: [fileId],
//               success: (res) => {
//                 const tempFileURL = res.fileList[0].tempFileURL;
//                 wx.downloadFile({
//                   url: tempFileURL,
//                   success: (res) => {
//                     wx.openDocument({
//                       fileType: 'pdf',
//                       filePath: res.tempFilePath,
//                       success: () => {
//                         wx.hideLoading();
//                         wx.showToast({ title: 'PDF生成成功' });
//                       }
//                     });
//                   }
//                 });
//               }
//             });
//           }
//         });
//       });
//   }
  });